{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "32655868BC534AE08626836CA4457945",
    "jupyter": {},
    "mdEditEnable": false,
    "notebookId": "60f20e4542cd8a0017864fe3",
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "## 第2题：安装keras，并使用keras解决上周的婚外情预测问题\n",
    "下面部分就是上周婚外情况预测问题。在模型训练部分才用了Keras，构建了三层BP网络。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "8828DC850F2B4D0DB424FBA3359C52B7",
    "jupyter": {},
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "DD5D0E86EAAA4E288EA4F592E79B5484",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "df_data=pd.read_csv('Affairs.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "id": "A591EE6BBB3346A78D56D30001AA1CDE",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(601, 10)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "id": "1C001B0696534D329A346D156DC7329A",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>affairs</th>\n",
       "      <th>gender</th>\n",
       "      <th>age</th>\n",
       "      <th>yearsmarried</th>\n",
       "      <th>children</th>\n",
       "      <th>religiousness</th>\n",
       "      <th>education</th>\n",
       "      <th>occupation</th>\n",
       "      <th>rating</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>male</td>\n",
       "      <td>37.0</td>\n",
       "      <td>10.00</td>\n",
       "      <td>no</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>female</td>\n",
       "      <td>27.0</td>\n",
       "      <td>4.00</td>\n",
       "      <td>no</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>female</td>\n",
       "      <td>32.0</td>\n",
       "      <td>15.00</td>\n",
       "      <td>yes</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "      <td>male</td>\n",
       "      <td>57.0</td>\n",
       "      <td>15.00</td>\n",
       "      <td>yes</td>\n",
       "      <td>5</td>\n",
       "      <td>18</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>0.75</td>\n",
       "      <td>no</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  affairs  gender   age  yearsmarried children  religiousness  \\\n",
       "0           4        0    male  37.0         10.00       no              3   \n",
       "1           5        0  female  27.0          4.00       no              4   \n",
       "2          11        0  female  32.0         15.00      yes              1   \n",
       "3          16        0    male  57.0         15.00      yes              5   \n",
       "4          23        0    male  22.0          0.75       no              2   \n",
       "\n",
       "   education  occupation  rating  \n",
       "0         18           7       4  \n",
       "1         14           6       4  \n",
       "2         12           1       4  \n",
       "3         18           6       5  \n",
       "4         17           6       3  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "634ECDE9DD8146D1A0E650FAB2B5991B",
    "jupyter": {},
    "mdEditEnable": false,
    "notebookId": "60f20e4542cd8a0017864fe3",
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "查看一下有没有缺失值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "BB5785FAA0714A1E83CA5ECD8D714428",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Unnamed: 0       0\n",
       "affairs          0\n",
       "gender           0\n",
       "age              0\n",
       "yearsmarried     0\n",
       "children         0\n",
       "religiousness    0\n",
       "education        0\n",
       "occupation       0\n",
       "rating           0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_data.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "82CF3B399B7B4E73AF3B9CF364606DEA",
    "jupyter": {},
    "mdEditEnable": false,
    "notebookId": "60f20e4542cd8a0017864fe3",
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "数据很完整，没有缺失值。下面看看分类型数据情况。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "id": "5D2F65A13B374CAA821C43D5C99C8BA4",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>gender</th>\n",
       "      <th>children</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>601</td>\n",
       "      <td>601</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>female</td>\n",
       "      <td>yes</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>315</td>\n",
       "      <td>430</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        gender children\n",
       "count      601      601\n",
       "unique       2        2\n",
       "top     female      yes\n",
       "freq       315      430"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_data.select_dtypes(include=['O']).describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "B03C19266AE04784AB1A8E5B415EEC1F",
    "jupyter": {},
    "mdEditEnable": false,
    "notebookId": "60f20e4542cd8a0017864fe3",
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "只有2个分类型变量，同时每个变量只有2个取值，可以考虑用one-hot编码转换。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "8AAEB8FC74AF42A6807167BA76664AD9",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>affairs</th>\n",
       "      <th>age</th>\n",
       "      <th>yearsmarried</th>\n",
       "      <th>religiousness</th>\n",
       "      <th>education</th>\n",
       "      <th>occupation</th>\n",
       "      <th>rating</th>\n",
       "      <th>gender_female</th>\n",
       "      <th>gender_male</th>\n",
       "      <th>children_no</th>\n",
       "      <th>children_yes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>10.00</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>4.00</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>15.00</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>15.00</td>\n",
       "      <td>5</td>\n",
       "      <td>18</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>0.75</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   affairs   age  yearsmarried  religiousness  education  occupation  rating  \\\n",
       "0        0  37.0         10.00              3         18           7       4   \n",
       "1        0  27.0          4.00              4         14           6       4   \n",
       "2        0  32.0         15.00              1         12           1       4   \n",
       "3        0  57.0         15.00              5         18           6       5   \n",
       "4        0  22.0          0.75              2         17           6       3   \n",
       "\n",
       "   gender_female  gender_male  children_no  children_yes  \n",
       "0              0            1            1             0  \n",
       "1              1            0            1             0  \n",
       "2              1            0            0             1  \n",
       "3              0            1            0             1  \n",
       "4              0            1            1             0  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dummy_feat=pd.get_dummies(df_data[['gender','children']])\n",
    "df_data=pd.concat([df_data,dummy_feat],axis=1)\n",
    "df_data=df_data.drop(columns=['Unnamed: 0','gender','children'])\n",
    "df_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "341809ECCA0F4703A37CADFC04327DBE",
    "jupyter": {},
    "mdEditEnable": false,
    "notebookId": "60f20e4542cd8a0017864fe3",
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "我们需要构造一个变量用来表示出轨概念，从上表的数据看，affairs=0表示没有出轨，affairs>0表示有出轨。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "id": "A6CAB17E469749B8B6D050F52CE25884",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "df_data['affair_rate']=(df_data['affairs']>0).astype('int')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "id": "24AA50963064447584DE95E127955CCD",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>affairs</th>\n",
       "      <th>age</th>\n",
       "      <th>yearsmarried</th>\n",
       "      <th>religiousness</th>\n",
       "      <th>education</th>\n",
       "      <th>occupation</th>\n",
       "      <th>rating</th>\n",
       "      <th>gender_female</th>\n",
       "      <th>gender_male</th>\n",
       "      <th>children_no</th>\n",
       "      <th>children_yes</th>\n",
       "      <th>affair_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>10.00</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>4.00</td>\n",
       "      <td>4</td>\n",
       "      <td>14</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>15.00</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>15.00</td>\n",
       "      <td>5</td>\n",
       "      <td>18</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>0.75</td>\n",
       "      <td>2</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   affairs   age  yearsmarried  religiousness  education  occupation  rating  \\\n",
       "0        0  37.0         10.00              3         18           7       4   \n",
       "1        0  27.0          4.00              4         14           6       4   \n",
       "2        0  32.0         15.00              1         12           1       4   \n",
       "3        0  57.0         15.00              5         18           6       5   \n",
       "4        0  22.0          0.75              2         17           6       3   \n",
       "\n",
       "   gender_female  gender_male  children_no  children_yes  affair_rate  \n",
       "0              0            1            1             0            0  \n",
       "1              1            0            1             0            0  \n",
       "2              1            0            0             1            0  \n",
       "3              0            1            0             1            0  \n",
       "4              0            1            1             0            0  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "0453A97EEE91461B8EA4608C7EA62C22",
    "jupyter": {},
    "mdEditEnable": false,
    "notebookId": "60f20e4542cd8a0017864fe3",
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "affair_rate变量为0表示没有出轨，为1表示有出轨。我们将此问题转化为用8个因变量来得出1个自变量的分类问题。\n",
    "现在来拆分一下训练集与测试集。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "id": "63F3F16CFABD463EBA1140EED9F77310",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "id": "C11B4098A98F4BE89F7976A56EC17F0F",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "X=df_data.drop(columns=['affairs','affair_rate'])\n",
    "Y=df_data['affair_rate']\n",
    "seed=1234\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,Y,test_size=0.2,random_state=seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "id": "9490F7F6CD6E42579CC64E6FD2D7C663",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import xgboost as xgb\n",
    "from sklearn.metrics import accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "id": "4107ECB4B29C4825812767D318C9E0A8",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\xgboost\\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1].\n",
      "  warnings.warn(label_encoder_deprecation_msg, UserWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
       "              colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,\n",
       "              importance_type='gain', interaction_constraints='',\n",
       "              learning_rate=0.300000012, max_delta_step=0, max_depth=6,\n",
       "              min_child_weight=1, missing=nan, monotone_constraints='()',\n",
       "              n_estimators=100, n_jobs=4, num_parallel_tree=1, random_state=0,\n",
       "              reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1,\n",
       "              tree_method='exact', validate_parameters=1, verbosity=None)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model=xgb.XGBClassifier()\n",
    "eval_set=[(X_test,y_test)]\n",
    "\n",
    "model.fit(X_train,y_train,early_stopping_rounds=10,eval_metric='logloss',\n",
    "          eval_set=eval_set,verbose=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "id": "ACD14D2981E6411D8265293173C596C1",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "y_pred=model.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "id": "FDDDDB96523443A5B6A7256D05D603BC",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "XGBoost, Accuracy: 76.03%\n"
     ]
    }
   ],
   "source": [
    "predictions = [value for value in y_pred]\n",
    "accuracy = accuracy_score(y_test, predictions)\n",
    "print(\"XGBoost, Accuracy: %.2f%%\" % (accuracy * 100.0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "id": "AFDC2C717E2E4C99B3E2661E8D481BE6",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve, auc \n",
    "import matplotlib.pyplot as plt\n",
    "def acu_curve(y,prob):\n",
    "    #  y真实,\n",
    "    #  prob预测\n",
    "    fpr,tpr,threshold = roc_curve(y,prob) ###计算真阳性率(真正率)和假阳性率(假正率)\n",
    "    roc_auc = auc(fpr,tpr) ###计算auc的值\n",
    " \n",
    "    plt.figure()\n",
    "    lw = 2\n",
    "    plt.figure(figsize=(12,10))\n",
    "    plt.plot(fpr, tpr, color='darkorange',\n",
    "             lw=lw, label='ROC curve (AUC = %0.3f)' % roc_auc) ###假正率为横坐标，真正率为纵坐标做曲线\n",
    "    plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n",
    "    plt.xlim([0.0, 1.0])\n",
    "    plt.ylim([0.0, 1.05])\n",
    "    plt.xlabel('False Positive Rate')\n",
    "    plt.ylabel('True Positive Rate')\n",
    "    plt.title('AUC')\n",
    "    plt.legend(loc=\"lower right\")\n",
    " \n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "3007F874329E48EBA07EE08EDF70A7CB",
    "jupyter": {},
    "mdEditEnable": false,
    "notebookId": "60f20e4542cd8a0017864fe3",
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "预测一下婚外情的概率，同时计算一下系统的AUC值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "id": "CD80AA3BEB0141128D6A12863C4DECDD",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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P/30E7169aJ169b06tWLRYsWbXC/xYsX069fP9q2bUu7du348MMPAfjTn/5Ex44d6dy5M7179+aHH34A4LXXXqNbt27suuuudOvWjTfffLPoWAcffPBvnqekVZwmmbOk4GvjrtD90g3/OvThX7zlgQcmsPfeDzBz5mK22aYma9bkln5uSZKUmGrVqjFp0iSmTJlC/fr1ufPOOwFYtWoVffv25YorruCrr77i008/5YMPPuCuu+4CYMqUKZx//vk8/vjjfPHFF0yZMoUddtihRLPl5m59L7n++uu54IILip4vXryYCRMmsHjxYr755ptiHWP16tX06dOHc845h+nTp/PFF19wzjnnbPUc5htuuIGePXvy9ddf07NnT2644YYN7nfhhRdy6KGH8uWXX/Lpp5/Srl07AC677DImT57MpEmTOOKII/jrXwsGVRs2bMhzzz3HZ599xiOPPMJJJ51UdKyTTjqp6L9hqlWc6SI/224/2P+mje6yatVazjvvRR56aBIAZ53VjVtuOZSsrIr3xyFJUrnwzxTNzb4kbnqfQnvttReTJ08G4Mknn2Sfffahd+/eAFSvXp077riDAw44gPPOO48bb7yRq666irZt2wJQuXJlzj333F8dc/ny5VxwwQWMGzeOEAJ//vOfyc7OpmbNmixfXjCdddSoUTz//PM8/PDDnHrqqdSvX5+JEyfSuXNnnn76aSZNmkTdunUB2GmnnXj//fepVKkSZ599NrNmzQLglltuYZ999vnFuZctW8bkyZPp1KlT0bbRo0dz5JFH0qRJE4YNG8Yf//jHTf65PPnkk+y1114ceeSRRdsOPPDA4v6x/qZnn32Wt99+G4BTTjmFAw44gL///e+/2Gfp0qW88847PPzwwwBUqVKFKlWqAFC7du2i/VasWFE0r7pLly5F29u3b8/q1atZs2YNVatWpW/fvvTo0YOrrrpqq/NvStq1yv/+9yf69RvJpEk/kpVVmbvv7sMpp3ROOpYkSUpQXl4eb7zxBqeffjpQMFWkW7duv9hnxx13ZPny5SxdupQpU6ZwySWXbPK411xzDXXq1OGzzz4DKNZUha+++orXX3+djIwM8vPzefrppxk8eDAfffQRLVu2pEmTJhx//PH8/ve/Z99992XWrFkccsghfPHFF784zrhx4+jQocMvtg0dOpQ///nPNGnShH79+hWr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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred_proba=model.predict_proba(X_test)\n",
    "acu_curve(y_test,y_pred_proba[:,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**以上内容都是上周用XGBoost建模的作业部分**  \n",
    "**以下内容是本周用Keras搭建用梯度下降法构成BP网络的模型**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "id": "8A18EBF9399C4FBA9D1F2A05621884AE",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "3/3 [==============================] - 1s 5ms/step - loss: 2.1394 - accuracy: 0.5512\n",
      "Epoch 2/10\n",
      "3/3 [==============================] - 0s 8ms/step - loss: 1.4872 - accuracy: 0.6150\n",
      "Epoch 3/10\n",
      "3/3 [==============================] - 0s 7ms/step - loss: 1.1983 - accuracy: 0.6656\n",
      "Epoch 4/10\n",
      "3/3 [==============================] - 0s 6ms/step - loss: 1.1593 - accuracy: 0.6192\n",
      "Epoch 5/10\n",
      "3/3 [==============================] - 0s 5ms/step - loss: 1.0747 - accuracy: 0.6633\n",
      "Epoch 6/10\n",
      "3/3 [==============================] - 0s 7ms/step - loss: 0.8873 - accuracy: 0.7044\n",
      "Epoch 7/10\n",
      "3/3 [==============================] - 0s 5ms/step - loss: 0.9338 - accuracy: 0.6554\n",
      "Epoch 8/10\n",
      "3/3 [==============================] - 0s 5ms/step - loss: 0.9518 - accuracy: 0.6723\n",
      "Epoch 9/10\n",
      "3/3 [==============================] - 0s 6ms/step - loss: 0.8594 - accuracy: 0.6519\n",
      "Epoch 10/10\n",
      "3/3 [==============================] - 0s 5ms/step - loss: 0.8579 - accuracy: 0.6442\n",
      "1/1 [==============================] - 0s 355ms/step - loss: 0.5431 - accuracy: 0.7521\n",
      "[0.5430909991264343, 0.7520661354064941]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, Dropout\n",
    "\n",
    "model = Sequential()\n",
    "model.add(Dense(256, input_dim=10, activation='relu'))\n",
    "model.add(Dropout(0.5))\n",
    "model.add(Dense(128, activation='relu'))\n",
    "model.add(Dropout(0.5))\n",
    "model.add(Dense(1, activation='sigmoid'))\n",
    "\n",
    "model.compile(loss='binary_crossentropy',\n",
    "              optimizer='rmsprop',\n",
    "              metrics=['accuracy'])\n",
    "model.fit(X_train, y_train,\n",
    "          epochs=10,\n",
    "          batch_size=200)\n",
    "score = model.evaluate(X_test, y_test, batch_size=200)\n",
    "print(score)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "id": "52FE4F37B1B04F4DBC2A1AD28026527F",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\13917\\AppData\\Roaming\\Python\\Python38\\site-packages\\keras\\engine\\sequential.py:425: UserWarning: `model.predict_proba()` is deprecated and will be removed after 2021-01-01. Please use `model.predict()` instead.\n",
      "  warnings.warn('`model.predict_proba()` is deprecated and '\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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sB1r6rRL9nuQJEklqmrVqkyaNIkpU6ZQt25d7r33XgBWrVpFr169uOaaa/jqq6/49NNP+fDDD7nvvvsAmDJlChdddBFPPvkkX3zxBVOmTGGXXXYp1mw5OTm/+hg333wzF198ceHjxYsXM2HCBBYvXsw333xTpGOsXr2aHj16cP755zN9+nS++OILzj///F89h/mWW26ha9eufP3113Tt2pVbbrllo/tdcsklHHnkkXz55Zd8+umntG7dGoArr7ySyZMnM2nSJHr27Mlf/vIXIP/ndsopp3D//fczdepU3nnnncJVQ0499dTC/4apVn5Gsn+208FwyG2b3WXVqnVceOFLPProJADOPbcTd955JJmZ5e/HIUlSmXB7iuZmXx6LvOv+++/P5MmTAXj66ac58MAD6d69OwDVqlXjnnvu4dBDD+XCCy/k1ltv5brrrqNVq1YAVKpUiQsuuOAXx1y+fDkXX3wx48aNI4TAn/70J7Kysv5nlHjUqFG88MILPPbYY5xxxhnUrVuXiRMn0r59e5599lkmTZpUOLq+22678cEHH5CWlsZ5553HrFmzALjzzjs58MAD/+fcy5YtY/LkybRr999BxOzsbI455hgaNWrEsGHD+P3vf7/Fn8vTTz/N/vvvzzHHHFO47bDDDivqj3WTnn/+ed555x0ATj/9dA499FD+9re//c8+S5cu5d133+Wxxx4DoHLlylSuXBmAWrVqFe63YsWKwn9heO2112jbtm3h912vXr3C/Xr16kWXLl247rrrfnX+LalwrfI//1lI794jmTTpRzIzK3H//T04/fT2SceSJEkJys3N5c033+Sss84C8qeKdOrU6X/22XXXXVm+fDlLly5lypQpXH755Vs87g033EDt2rX57LPPAFi0aNEWX/PVV1/xxhtvkJ6eTl5eHs8++ywDBgzg448/plmzZjRq1IiTTjqJ3/3udxx00EHMmjWLI444gi+++OJ/jjNu3DjatGnzP9uGDh3Kn/70Jxo1akTv3r2LVLKnTJnyi5/FxixbtowuXbps9Lmnn36aPfbY43+2/fTTTzRu3BiAxo0bM3fu3F+8bsaMGTRo0IABAwbw6aef0qlTJ+666y6qV68OwHXXXccTTzxB7dq1efvtt4H8n18IgSOOOIJ58+Zx4oknctVVVwGw3XbbsWbNGhYsWPA/5TsVKlzJ/vLL+Uya9CO77VaX7Oy+tG277XOJJElSMdmKEefitGrVKtq3b8/MmTPp1KkT3brl33guxrjJFSe2ZiWKN954g2HDhhU+Lspc4D59+pCeng5Av379+Mtf/sKAAQMYNmwY/fr1Kzzu559/XviapUuXsmzZMmrWrFm4bc6cOTRo0KDw8U8//cT06dM56KCDCCFQqVIlpkyZQps2bTb6PW3tihs1a9Zk0qRJW/WaLcnJyWHChAkMGjSIfffdl0suuYRbbrmFG264AYCbbrqJm266ib/+9a/cc889/PnPfyYnJ4f333+fsWPHUq1aNbp27UqnTp3o2rUrAA0bNuSHH35IeckuP3Oyi6hHj5Y8/fQJjBt3jgVbkqQK7uc52d9++y1r164tnJO95557Mm7cuP/Zd8aMGdSoUYOaNWuy5557Mn78+C0ef1Nlff1tG97x8udRWsifwjJ9+nTmzZvHc889xwknnABAXl4eH330EZMmTWLSpEl8//33/1Owf/7e1j/28OHDWbRoEc2bN6dZs2bMnDmz8C8A9erV+59R9oULF1K/fv3Cn0VRvtdly5bRvn37jX6s/xeCnzVq1Ig5c+YA+X8haNiw4S/22Wmnndhpp53Yd999AejduzcTJkz4xX4nnXQS2dnZha855JBDqF+/PtWqVePoo4/+n9esXr2aqlWrbvH7+bXKfcmeO3cFRx75JO+/P6twW//+e1G7dmaCqSRJUmlSu3Zt7r77bv7+97+zbt06Tj75ZN5//33eeOMNIH/E+7e//W3htIMrr7ySm2++ma+++grIL7133HHHL47bvXt37rnnnsLHPxfZRo0a8cUXXxROB9mUEALHH388l112Ga1bty4cfd3wuBsbQW7dujXTp08vfDx06FBeeeUVZs6cycyZMxk/fnxhyT700EMZPnw4a9euBeCxxx4rnHd90kkn8eGHH/Liiy8WHuuVV14pnALzs59Hsjf2seFUEcifH/34448D8Pjjj3Psscf+Yp/tt9+eJk2aMG3aNADefPPNwmN9/fXXhfuNHj26cH78EUccweTJk1m5ciU5OTn8+9//LnxNjJEff/yRZs2a/eJcxa1cl+wPP/yODh0e4NVX/8Nvf/syMSbzT1GSJKn069ChA+3atWPYsGFUrVqV559/nhtvvJHdd9+dvfbai7333puLLroIgLZt23LnnXfSv39/Wrdu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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_mlp_proba=model.predict_proba(X_test)\n",
    "acu_curve(y_test,y_mlp_proba)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "726ED29DB7F0433EAD51AE46471B4824",
    "jupyter": {},
    "notebookId": "60f20e4542cd8a0017864fe3",
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
